package junior.db.dao.base;

import junior.db.dao.enums.LikeMode;

import java.util.Collection;
import java.util.List;

public interface IFilter<Q> {

	List<IFilterItem> getFilters();
    
    Q addFilter(IFilterItem filterItem);
    
    Q eq(String left, Object value);
    
    Q neq(String left, Object value);
    
    Q gt(String left, Object value);
    
    Q lt(String left, Object value);
    
    Q gte(String left, Object value);
    
    Q lte(String left, Object value);
    
    Q bt(String left, Object value1, Object value2);
    
    Q nvl(String left);
    
    Q notNvl(String left);
    
    Q in(String left, Collection<?> values);
    
    Q in(String left, Object[] values);
    
    Q notIn(String left, Collection<?> values);
    
    Q notIn(String left, Object[] values);
    
    Q like(String left, Object value, LikeMode mode);
    
    Q notLike(String left, Object value, LikeMode mode);
    
}
